const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
var Cookies = require('cookies');
const swig = require('swig'); //加载模板

const main = express();
main.use("/public", express.static(__dirname + "/public"))

const User = require('./models/users')

//模板配置
//定义当前应用所使用的模板引擎
//第一个参数：模板引擎名称，同时也是模板文件后缀，
// 第二个参数表示用于解析处理模板内容的方法
main.engine('html', swig.renderFile);
//设置模板存放目录，第一个参数必须是views，第二个是目录
main.set('views', "./views");
//注册所使用模版引擎，第一个参数必须是view engine 第二个参数和app.engine
//这个方法中定义的模板引擎名称(第一个参数)是一致的
main.set('view engine', 'html');
//开发过程 需要取消模板缓存
swig.setDefaults({
    cache: false
})


// 解析 application/json
main.use(bodyParser.json());
// 解析 application/x-www-form-urlencoded
main.use(bodyParser.urlencoded());


// cookies设置

main.use(function (req, res, next) {
    req.cookies = new Cookies(req, res);
    //解析登录用户的cookies信息
    req.userInfo = {};
    if (req.cookies.get('userInfo')) {
        try {
            req.userInfo = JSON.parse(req.cookies.get('userInfo'));

            // 获取当前登录用户的类型，是否是管理员
            User.findById(req.userInfo._id).then(function(userInfo){
                req.userInfo.isAdmin = Boolean(userInfo.isAdmin);
                next();
            })
        } catch (e) {
            next();
        }
    } else {
        next();
    }
})


// 路由
main.use('/', require('./routers/client'));
main.use('/admin', require('./routers/admin'));
main.use('/api', require('./routers/api'));

// 连接数据库
const connect = require('./utils/connect');
connect.then(function () {
    main.listen(4000, function (err) {
        if (err) throw err;
        console.log('http://127.0.0.1:4000')
    })
});


/*
*  1. 前端页面
*  2. 连接数据库，开启本地端口
*  3. 配置模板引擎，设置静态文件托管
*
*
*
*
*
* */